package offer.offer04;

import java.util.Arrays;

/**
 * 23, 36 不太行 从左到右, 对每个数, 在右边用二分法找有没有对应的数
 * 双指针往中间逼近确实不会跳过可能会成为解的组合, 理解一下, 注意。
 */
public class Solution57 {
    public int[] twoSum(int[] nums, int target) {
        if(nums.length == 2) return null;
        int[] result = new int[2];
        for(int i = 0; i < nums.length - 1; i++){
            int searchResult = Arrays.binarySearch(nums, i+1, nums.length, target - nums[i]);
            if(searchResult >= 0) {
                result[0] = nums[i];
                result[1] = nums[searchResult];
                return result;
            }
        }
        return null;
    }

    public static void main(String[] args) {
        int[] input = new int[]{10, 26, 30, 31, 47, 60};
        System.out.println(Arrays.toString(new Solution57().twoSum(input, 40)));
    }
}
